package com.woniu.day8.controller;

import cn.dev33.satoken.annotation.SaCheckLogin;
import com.woniu.day8.mapper.UserRoleMapper;
import com.woniu.day8.pojo.Role;
import com.woniu.day8.pojo.dto.UserInfoDto;
import com.woniu.day8.util.ResultMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/roles")
@CrossOrigin
@SaCheckLogin
public class RolesController {

    @Autowired
    private UserRoleMapper userRoleMapper;

    /**
     * 查询所有角色
     */
    @GetMapping("/select")
    public  ResultMessage select(){
        List<Role> list = userRoleMapper.selectList(null);
        return ResultMessage.success(list);
    }
    /**
     * 修改用户角色
     * @param Duser 包含用户ID和角色ID列表的DTO
     */
    @PostMapping("/putroles")
    public ResultMessage putroles(@RequestBody UserInfoDto Duser){
        try {
            // 获取用户ID和角色ID列表
            Integer userId = Duser.getId();
            List<Integer> roles = Duser.getRolesId();
            // 参数校验
            if (userId == null || userId <= 0) {
                return ResultMessage.fail("用户ID不能为空");
            }
            if (roles == null || roles.isEmpty()) {
                return ResultMessage.fail("角色列表不能为空");
            }
            // 先删除用户现有的所有角色关联
            userRoleMapper.deleteUserAllRolesByUserId(userId);
            // 循环添加新的角色关联
            for (Integer roleId : roles) {
                if (roleId != null && roleId > 0) {
                    userRoleMapper.insertUserRole(userId, roleId);
                }
            }
            return ResultMessage.success("角色修改成功");
        } catch (Exception e) {
            e.printStackTrace();
            return ResultMessage.fail("角色修改失败: " + e.getMessage());
        }
    }


}
